"""6.2 异常捕获机制
在程序运行过程中，不可避免的会出现一些错误，比如：
使用了没有赋值过的变量
使用了不存在的索引
"""
# 一、异常捕获机制 :try...except
try:
    result=1/0
    print(result)
except ZeroDivisionError:
    print("除数不能为0")
print("异常捕获机制 :try...except 演示")

#二、异常捕获机制 :try...except...else
try:
    result=1/0
    print(result)
except ZeroDivisionError:
    print("===除数不能为0")
else:
    print("没有异常")

print("异常捕获机制 :try...except...else 演示")

#三、异常捕获机制 :try...except...finally
#文件打开错误
file=None
try:
    file=open("test.txt","r")
    print(file.read())
    # file.close()
except FileNotFoundError:
    print("文件不存在")
finally:
    #程序一定会执行
    file.close()
    print("已关闭文件")

#四、raise语句：用于手动抛出异常
def divide(a,b):
    if b==0:
        #手动抛出异常
        raise ZeroDivisionError("除数不能为0")
    return a/b

try:
    result=divide(1,0)
    print(result)
except ZeroDivisionError as e:
    print("手动抛出异常，异常信息：")
    print(e)


